﻿$(function () {

    //1.初始化Table
    var oTable = new TableInit();
    oTable.Init();

    //2.初始化Button的点击事件
    var oButtonInit = new ButtonInit();
    oButtonInit.Init();

});

var TableInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#expandabledatatable').bootstrapTable({
            url: '/Task/GetAllTask',         //请求后台的URL（*）
            method: 'get',                      //请求方式（*）
            toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,                   //是否显示分页（*）
            sortable: false,                     //是否启用排序
            sortOrder: "asc",                   //排序方式
            queryParams: oTableInit.queryParams,//传递参数（*）
            sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1,                       //初始化加载第一页，默认第一页
            pageSize: 5,                       //每页的记录行数（*）
            pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
            search: true,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: true,
            showColumns: true,                  //是否显示所有的列
            showRefresh: true,                  //是否显示刷新按钮
            minimumCountColumns: 2,             //最少允许的列数
            clickToSelect: false,                //是否启用点击选中行
            height: 400,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID",                     //每一行的唯一标识，一般为主键列
            showToggle: true,                    //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            detailView: false,                   //是否显示父子表
            columns: [{
                checkbox: true
            },
			{
			    field: 'Id',
			    visible: false

			},
			{
			    field: 'TaskName',
			    title: '任务名称'
			},
            {
                 field: 'ClassName',
                 title: '类名称'
            },
            {
			    field: 'CronExpression',
			    title: 'cron表达式'
			},
            {
                field: 'LastTime',
                title: '上次执行时间'
            },
            {
                field: 'NextTime',
                title: '下次执行时间'
            },
            {
                field: 'Allowused',
                title: '运行状态',
                formatter: function (value, row, index) {
                    if(value==true)
                        return '<button type="button" class="btn btn-success btn-sm">运行</button>';
                    else
                        return '<button type="button" class="btn btn-warning btn-sm">暂停</button>';
                }
            },
            {
                field: 'CreateTime',
                title: '创建时间'
            },
            {
			    field: 'Remark',
			    title: '描述'
			}, ]
        });
    };

    //得到查询的参数
    oTableInit.queryParams = function (params) {
        var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            limit: params.limit,   //页面大小
            offset: params.offset,  //页码
            departmentname: $("#txt_search_departmentname").val(),
            statu: $("#txt_search_statu").val()
        };
        return temp;
    };
    return oTableInit;
};


var ButtonInit = function () {
    var oInit = new Object();
    var postdata = {};
    
    //初始化页面上面的按钮事件
    oInit.Init = function () {
        bootbox.setLocale("zh_CN");
        //新增数据click事件注册
        $("#btn_add").click(function () {
            $("#myModalLabel").text("添加任务");
            $("#myModal").find(".form-control").val("");
            $('#myModal').modal();

            postdata.ROLE_ID = "";
        });

        //编辑数据click事件注册
        $("#btn_edit").click(function () {
            var arrselections = $("#expandabledatatable").bootstrapTable('getSelections');
            if (arrselections.length > 1) {
                bootbox.alert('只能选择一行进行编辑')
                return;
            }
            if (arrselections.length <= 0) {
                bootbox.alert('请选择有效数据')
                return;
            }
            $("#myModalLabel").text("编辑");
            $("#txt_id").val(arrselections[0].Id);
            $("#txt_takeName").val(arrselections[0].TaskName);
            $("#txt_className").val(arrselections[0].ClassName);
            $("#txt_cron").val(arrselections[0].CronExpression);
            $("#txt_cronRemark").val(arrselections[0].Remark);

            postdata.ROLE_ID = arrselections[0].TaskName;
            $('#myModal').modal();
        });

        //删除数据click事件注册
        $("#btn_delete").click(function () {
            var arrselections = $("#expandabledatatable").bootstrapTable('getSelections');
            if (arrselections.length <= 0) {
                bootbox.alert('请选择有效数据');
                return;
            }

            var ids = "";
            $.each(arrselections, function (index, value) {
                ids += value['Id'] + ',';
            })
            ids = ids.substring(0, ids.length - 1);

            bootbox.confirm("确认要删除选择的数据吗？", function (resule) {
                if (resule) {
                    $.ajax({
                        type: "post",
                        url: "/Task/DeleteTask",
                        data: { "ids": ids },
                        success: function (data, status) {
                            bootbox.alert(data, function () {
                                $("#expandabledatatable").bootstrapTable('refresh');
                            });
                        },
                        error: function () {
                            bootbox.alert('系统异常');
                        },
                        complete: function () {

                        }

                    });
                }

            });
        });

        //启动任务click事件注册
        $("#btn_start").click(function () {
            var arrselections = $("#expandabledatatable").bootstrapTable('getSelections');
            if (arrselections.length <= 0) {
                bootbox.alert('请选择有效数据');
                return;
            }
            var ids = "";
            $.each(arrselections, function (index, value) {
                ids += value['Id'] + ',';
            })
            ids = ids.substring(0, ids.length - 1);

            $.ajax({
                type: "post",
                url: "/Task/StatrTask",
                data: { "ids": ids },
                success: function (data, status) {
                    bootbox.alert(data, function () {
                        $("#expandabledatatable").bootstrapTable('refresh');
                    });
                },
                error: function () {
                    bootbox.alert('系统异常');
                },
                complete: function () {

                }

            });
        });

        //暂停任务click事件注册
        $("#btn_stop").click(function () {
            var arrselections = $("#expandabledatatable").bootstrapTable('getSelections');
            if (arrselections.length <= 0) {
                bootbox.alert('请选择有效数据');
                return;
            }
            var ids = "";
            $.each(arrselections, function (index, value) {
                ids += value['Id'] + ',';
            })
            ids = ids.substring(0, ids.length - 1);

            $.ajax({
                type: "post",
                url: "/Task/StopTask",
                data: { "ids": ids },
                success: function (data, status) {
                    bootbox.alert(data, function () {
                        $("#expandabledatatable").bootstrapTable('refresh');
                    });
                },
                error: function () {
                    bootbox.alert('系统异常');
                },
                complete: function () {
                }

            });
        });
    };
    return oInit;
};


